package com.ruirui.demo;

import reactor.core.publisher.Flux;
import reactor.core.publisher.Signal;
import reactor.core.publisher.SynchronousSink;

import java.util.function.Consumer;

/**
 * 单线程操作
 */

public class FluxGenerate{
    public static void main(String[] args) {
        Flux.generate(() -> 0,                   // 初始化状态（state），起始值为 0
                        (state, sink) -> {                   // 每次生成元素时会调用这个 lambda
                            sink.next(state);               // 将当前 state 发射给下游
                            if (state == 10)                // 如果当前值为 10，说明结束
                                sink.complete();           // 触发完成信号，终止流
                            return state + 1;              // 更新 state，下一次执行将使用这个值
                        }
                )
                .log()                             // 打印 Flux 的事件日志（用于调试）
                .subscribe();                          // 开始订阅，触发数据流
    }
}
